#include <string>
#include <vector>
using namespace std;
class Solution
{
public:
    int minFlipsMonoIncr(string s)
    {
        int size(s.size());
        // 一个位置先变成0或者1 的最小封装次数
        // 0: 前一个变成0+自身是不是0
        // 1: 前一个变成1+自身是不是1
        vector<vector<int>> dp(size, vector<int>(2));
        int dp_0 = (s[0] - '0'), dp_1 = !dp_0;
        for (int i = 1; i < s.size(); i++)
        {
            dp_1 = !(s[i] - '0') + min(dp_0, dp_1);
            dp_0 = s[i] - '0' + dp_0;
        }
        return min(dp_0, dp_1);
    }
};